<?php
/**
 * Created by PhpStorm.
 * User: edmmss
 * Date: 2018/12/4
 * Time: 13:51
 */

namespace app\modules\facade\controller;

use app\modules\facade\Bios;
use app\modules\facade\Facade;
use app\modules\facade\Os;
use yii\web\Controller;

class DefaultController extends Controller
{
    /**
     * 门面模式示例
     *
     * 门面模式对客户屏蔽子系统组件，因而减少了客户处理的对象的数目并使得子系统使用起来更加方便；
     * 实现了子系统与客户之间的松耦合关系，而子系统内部的功能组件往往是紧耦合的，松耦合关系使得子系统的组件变化不会影响到它的客户；
     * 如果应用需要，门面模式并不限制客户程序使用子系统类，因此你可以让客户程序在系统易用性和通用性之间加以选择。
     *
     * @date   2018/12/4
     * @author edmmss
     * @return bool
     */
    public function actionIndex()
    {
        // 这里的门面模式加了依赖注入的思想
        $os = new Os();
        $bios = new Bios();

        $facade = new Facade($os, $bios);
        $facade->turnOn();
        $facade->turnOff();

        return true;
    }
}